home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / neighbour.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  4KB  |  162 lines

  1. #ifndef __LINUX_NEIGHBOUR_H
  2. #define __LINUX_NEIGHBOUR_H
  3.  
  4. #include <linux/types.h>
  5. #include <linux/netlink.h>
  6.  
  7. struct ndmsg
  8. {
  9.     __u8        ndm_family;
  10.     __u8        ndm_pad1;
  11.     __u16        ndm_pad2;
  12.     __s32        ndm_ifindex;
  13.     __u16        ndm_state;
  14.     __u8        ndm_flags;
  15.     __u8        ndm_type;
  16. };
  17.  
  18. enum
  19. {
  20.     NDA_UNSPEC,
  21.     NDA_DST,
  22.     NDA_LLADDR,
  23.     NDA_CACHEINFO,
  24.     NDA_PROBES,
  25.     __NDA_MAX
  26. };
  27.  
  28. #define NDA_MAX (__NDA_MAX - 1)
  29.  
  30. /*
  31.  *    Neighbor Cache Entry Flags
  32.  */
  33.  
  34. #define NTF_USE        0x01
  35. #define NTF_PROXY    0x08    /* == ATF_PUBL */
  36. #define NTF_ROUTER    0x80
  37.  
  38. /*
  39.  *    Neighbor Cache Entry States.
  40.  */
  41.  
  42. #define NUD_INCOMPLETE    0x01
  43. #define NUD_REACHABLE    0x02
  44. #define NUD_STALE    0x04
  45. #define NUD_DELAY    0x08
  46. #define NUD_PROBE    0x10
  47. #define NUD_FAILED    0x20
  48.  
  49. /* Dummy states */
  50. #define NUD_NOARP    0x40
  51. #define NUD_PERMANENT    0x80
  52. #define NUD_NONE    0x00
  53.  
  54. /* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change
  55.    and make no address resolution or NUD.
  56.    NUD_PERMANENT is also cannot be deleted by garbage collectors.
  57.  */
  58.  
  59. struct nda_cacheinfo
  60. {
  61.     __u32        ndm_confirmed;
  62.     __u32        ndm_used;
  63.     __u32        ndm_updated;
  64.     __u32        ndm_refcnt;
  65. };
  66.  
  67. /*****************************************************************
  68.  *        Neighbour tables specific messages.
  69.  *
  70.  * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the
  71.  * NLM_F_DUMP flag set. Every neighbour table configuration is
  72.  * spread over multiple messages to avoid running into message
  73.  * size limits on systems with many interfaces. The first message
  74.  * in the sequence transports all not device specific data such as
  75.  * statistics, configuration, and the default parameter set.
  76.  * This message is followed by 0..n messages carrying device
  77.  * specific parameter sets.
  78.  * Although the ordering should be sufficient, NDTA_NAME can be
  79.  * used to identify sequences. The initial message can be identified
  80.  * by checking for NDTA_CONFIG. The device specific messages do
  81.  * not contain this TLV but have NDTPA_IFINDEX set to the
  82.  * corresponding interface index.
  83.  *
  84.  * To change neighbour table attributes, send RTM_SETNEIGHTBL
  85.  * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3],
  86.  * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked
  87.  * otherwise. Device specific parameter sets can be changed by
  88.  * setting NDTPA_IFINDEX to the interface index of the corresponding
  89.  * device.
  90.  ****/
  91.  
  92. struct ndt_stats
  93. {
  94.     __u64        ndts_allocs;
  95.     __u64        ndts_destroys;
  96.     __u64        ndts_hash_grows;
  97.     __u64        ndts_res_failed;
  98.     __u64        ndts_lookups;
  99.     __u64        ndts_hits;
  100.     __u64        ndts_rcv_probes_mcast;
  101.     __u64        ndts_rcv_probes_ucast;
  102.     __u64        ndts_periodic_gc_runs;
  103.     __u64        ndts_forced_gc_runs;
  104. };
  105.  
  106. enum {
  107.     NDTPA_UNSPEC,
  108.     NDTPA_IFINDEX,            /* u32, unchangeable */
  109.     NDTPA_REFCNT,            /* u32, read-only */
  110.     NDTPA_REACHABLE_TIME,        /* u64, read-only, msecs */
  111.     NDTPA_BASE_REACHABLE_TIME,    /* u64, msecs */
  112.     NDTPA_RETRANS_TIME,        /* u64, msecs */
  113.     NDTPA_GC_STALETIME,        /* u64, msecs */
  114.     NDTPA_DELAY_PROBE_TIME,        /* u64, msecs */
  115.     NDTPA_QUEUE_LEN,        /* u32 */
  116.     NDTPA_APP_PROBES,        /* u32 */
  117.     NDTPA_UCAST_PROBES,        /* u32 */
  118.     NDTPA_MCAST_PROBES,        /* u32 */
  119.     NDTPA_ANYCAST_DELAY,        /* u64, msecs */
  120.     NDTPA_PROXY_DELAY,        /* u64, msecs */
  121.     NDTPA_PROXY_QLEN,        /* u32 */
  122.     NDTPA_LOCKTIME,            /* u64, msecs */
  123.     __NDTPA_MAX
  124. };
  125. #define NDTPA_MAX (__NDTPA_MAX - 1)
  126.  
  127. struct ndtmsg
  128. {
  129.     __u8        ndtm_family;
  130.     __u8        ndtm_pad1;
  131.     __u16        ndtm_pad2;
  132. };
  133.  
  134. struct ndt_config
  135. {
  136.     __u16        ndtc_key_len;
  137.     __u16        ndtc_entry_size;
  138.     __u32        ndtc_entries;
  139.     __u32        ndtc_last_flush;    /* delta to now in msecs */
  140.     __u32        ndtc_last_rand;        /* delta to now in msecs */
  141.     __u32        ndtc_hash_rnd;
  142.     __u32        ndtc_hash_mask;
  143.     __u32        ndtc_hash_chain_gc;
  144.     __u32        ndtc_proxy_qlen;
  145. };
  146.  
  147. enum {
  148.     NDTA_UNSPEC,
  149.     NDTA_NAME,            /* char *, unchangeable */
  150.     NDTA_THRESH1,            /* u32 */
  151.     NDTA_THRESH2,            /* u32 */
  152.     NDTA_THRESH3,            /* u32 */
  153.     NDTA_CONFIG,            /* struct ndt_config, read-only */
  154.     NDTA_PARMS,            /* nested TLV NDTPA_* */
  155.     NDTA_STATS,            /* struct ndt_stats, read-only */
  156.     NDTA_GC_INTERVAL,        /* u64, msecs */
  157.     __NDTA_MAX
  158. };
  159. #define NDTA_MAX (__NDTA_MAX - 1)
  160.  
  161. #endif
  162.